#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>


namespace Ui {
class MainWindow;
}

#include "cpu.hpp"

class MainWindow : public QMainWindow
{
    Q_OBJECT
    
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    void updateWindowRegisters();
    void openBinary(const QString fileName);
    int compileCode();
    
private slots:
    void on_actionOpenBinary_triggered();

    void on_actionOpen_Z80_Code_triggered();

    void on_actionRun_triggered();

    void on_actionStep_triggered();

	void on_actionCompile_triggered();

    void on_txtRegA_textChanged(const QString &arg1);

    void on_txtRegB_textChanged(const QString &arg1);

    void on_txtRegC_textChanged(const QString &arg1);

    void on_txtRegD_textChanged(const QString &arg1);

    void on_txtRegE_textChanged(const QString &arg1);

    void on_txtRegH_textChanged(const QString &arg1);

    void on_txtRegL_textChanged(const QString &arg1);

    void on_txtRegBC_textChanged(const QString &arg1);

    void on_txtRegDE_textChanged(const QString &arg1);

    void on_txtRegHL_textChanged(const QString &arg1);

    void on_txtRegIX_textChanged(const QString &arg1);

    void on_txtRegIY_textChanged(const QString &arg1);

    void on_txtRegPC_textChanged(const QString &arg1);

    void on_txtRegSP_textChanged(const QString &arg1);

private:
    Ui::MainWindow *ui;

    cpu * CPU;
};

#endif // MAINWINDOW_H
